home *** CD-ROM | disk | FTP | other *** search
- =====================================================================
- SimpleSort V1.0
- =====================================================================
-
- (C) 1993/94 Helmut Neumann
-
- *DAS* Sortierprogramm für den Amiga
-
-
-
-
- 0. Nutzungsbedingungen
- ======================
-
-
- Dieses Programm wird unter der Idee der Share-Ware angeboten, die
- Nutzung ist zu Test-Zwecken frei. Bei Gefallen und weitergehender
- Nutzung ist eine Gebühr von 10,- DM an mich zu entrichten. Ich kann
- natürlich eine Nutzung des Programm nicht kontrollieren, aber über
- Bugreports nicht registrierter Benutzer bin ich verständlicherweise
- nicht sehr erfreut. Es wird keine eingeschränkte Version des
- Programms zu Testzwecken geben, ich kann also nur an das Gewissen der
- Viel-Nutzer appellieren sich registrieren zu lassen. Ich übernehme
- keinerlei Garantie für Fehlerfreiheit des Programms. Die Anwendung
- dieses Programms kann die üblichen Fehler bis hin zu Verlust der
- Daten der Platte bei unglücklichen Abstürzen hervorrufen. Das Archiv
- darf ausschließlich mit der unveränderten Anleitung, der
- BUGREPORT.FORM, SimpleSort und SimpleSort020 weitergegen werden.
- Weitere Dateien haben im Archiv nichts zu suchen. Die Verursacher
- von .displaymes und anderen schwachsinnigen Texten werden mit
- Lindenstraße nicht unter 10 Folgen bestraft (mit Ton !!).
-
-
-
-
- 1. Einführung
- =============
-
-
- 1.1. Das War :-( (Motivation)
- -----------------------------
-
- Jeder der bislang den Dos-Befehl Sort benutzen mußte wird zweierlei
- festgestellt haben : Er braucht mindestens die Länge der
- Eingabedatei und er ist vor allem recht langsam. Zwischenzeitlich
- kamen mehrere Alternativen heraus, von denen llsort zwar schnell ist
- aber die doppelte (!) Länge der zu sortierenden Datei als
- zusammenhängenden Speicherblock braucht. Weiterhin gibt es noch
- avlsort, welches sich neben seines Mindestspeicherbedarfs (auch hier
- Länge der Eingabedatei) ebenso wie der Dos-Sort-Befehl durch extrem
- langsame IO-Routinen auszeichnet. Dies ist alles nicht befriedigend
- und spätestens bei allen Dateien die größer als der verfügbare
- Hauptspeicher sind wird die Sortierung entweder unmöglich oder extrem
- (!) langsam (wenn man den Umweg über eine virtuelle
- Speicherverwaltung geht).
-
-
- 1.2. Das Ist :-)
- ----------------
-
- Nun ist die erste Version des Sortierers fertig, der all diese
- Nachteile ausbügelt. Hier die wichtigsten Features im Überblick :
-
- - Die Größe der sortierbaren Dateien ist lediglich durch den
- Plattenplatz beschränkt.
-
- - Der vom Sortierer zu benutzende Speicher kann genau vorgegeben
- werden.
-
- - Es werden ausgereifte Caching-Routinen eingesetzt, um die üblichen
- Nachteile bei Zeilenweisem Einlesen und Wegschreiben zu beheben.
-
- - Um ein vielfaches schneller als die bislang verfügbaren
- Sortierprogramme auf dem Amiga.
-
- - Das append odd-length problem wird zur Steigerung der
- IO-Geschwindigkeit erkannt und behoben.
-
-
-
-
- 2. Anwendung
- ============
-
-
-
- 2.1 Programmaufruf
- ------------------
-
- SimpleSort sortiert eine vorgegebene (ASCII-) Datei auf die
- Zieldatei. Die Syntax ist in der Minimal-Angabe Analog zu den
- bisherigen Sortierprogrammen und erfordert mindestens die Angabe des
- Namens der Eingabedatei und der Ausgabedatei :
-
- SimpleSort infile outfile
-
-
-
- 2.2 Optionen
- ------------
-
- Zusätzlich sind zur Steuerung des Default-Verhaltens des Programm
- noch weitere Optionen vorgesehen, welche hinter dem Namen der
- Eingabe- und der Ausgabe-Datei angegeben werden können :
-
-
- -quiet
-
- Es werden sämtliche Ausgaben des Programms incl. der
- Copyright-Meldung unterdrückt. Ausgenommen hiervon sind
- Fehlermeldungen.
-
-
- -maxmem
-
- SimpleSort darf den ganzen Speicher abzüglich einer Reserve von 10
- Prozent des momentanen Fastmems benutzen.
-
-
- -sloppy
-
- Diese Option ermöglicht die Sortierung von Binär-Dateien. Die
- Ausgabedatei kann hierbei eine geringfügig andere Länge haben.
-
-
- -outbufsize size
-
- Mit dieser Option kann man die Größe des Output-Buffers bestimmen.
- size wird als gewünschte Bytes aufgefaßt, ein Wert von weniger als
- 10000 Bytes ist nicht sinnvoll und wird (ohne Fehlermeldung) nicht
- akzeptiert. Default-Wert ist 256000 Bytes.
-
-
- -inbufsize size
-
- Mit dieser Option kann die Größe des Eingabepuffers festgelegt
- werden. 10 Prozent dieses Speichers gehen allerdings für das Array
- mit den Zeilennummern drauf. Als Default-Wert wird hier die Hälfte
- des momentan verfügbaren Fastmems genommen, oder wenn kein Fastmem
- verfuegbar ist (z.B. roher A1200) entsprechend das Chipmem. Es wird
- aber immer die Reserve berücksichtigt, das heißt wenn man mehr
- Speicher angibt als tatsächlich abzüglich der Reserve verfügbar ist,
- dann ist das auch kein Problem.
-
-
- -reserve size
-
- Diese Option bietet in Kombination mit -maxmem eine bequeme
- Möglichkeit eine Arbeitskonfiguration über den vom Programm zu
- belassenen freien Speicher zu definieren. Hierbei ist als Reserve
- ausschließlich Fastmem gemeint, hinzu kommt noch eventuell ;-)
- vorhandenes Chipmem, welches nach Möglichkeit gar nicht tangiert
- wird.
-
-
-
-
- 3. Interna
- ===========
-
-
-
- 3.1. (wie machen die das bloß :)
- --------------------------------
-
- SimpleSort verhält sich bei Dateien die bequem ins Fastmem passen
- genau so wie die bisherigen Sortierprogramme, es ist nur um ein
- vielfaches schneller. Hierbei ist zu beachten, daß SimpleSort nicht
- (!) automatisch den maximal möglichen Speicher reserviert sondern
- immer die Hälfte. Wer mehr wünscht, und das kann manchmal bei der
- Sortierung von Dateien in einem Rutsch sinnvoll sein, der muß die
- Option -maxmem verwenden oder die Größe des zu benutzenden Speichers
- mit -inbufsize einstellen.
-
- Wenn nun aber Dateien sortiert werden müssen, welche leider länger
- sind als der verfügbare Speicher teilt simplesort diese in
- vorsortierte Teildateien auf. In einem zweiten Schritt (nach Meldung
- Phase 1 beendet) werden dann diese Einzeldateien nach dem
- Merge-Sort-Prinzip (sortieren von mehreren bereits vorsortierten
- Einzeldateien (Bändern)) zu einer neuen sortierten Datei. Hierbei
- machen sich besonders die Cache-Routinen besonders bemerkbar, ohne
- die das ganze doch ETWAS langsamer wäre, die HD-Lampe würde nur
- glimmen, die HD würde kräftig rappeln und die Gesamt-Performance wäre
- lausig. Die größte in der Testphase sortierte Datei war ein Logfile
- mit 66 MB Länge. Diese Datei wurde mit einer Hauptspeichernutzung
- von lediglich 1.5 MB in ca. 15 Minuten klaglos sortiert !
-
- Der Nachteil des ganzen, wenn man überhaupt davon sprechen kann, ist
- daß man kurzfristig die zweifache Länge der zu sortierenden Datei auf
- der Zielplatte benötigt. Es wäre noch möglich eine Option
- einzubauen, die nach Abschluß der ersten Phase die Eingabedatei
- löscht, ich weiß aber nicht wie praxisgerecht dies wäre.
-
-
-
- 3.2. Was machen die bloß nicht :-(
- ----------------------------------
-
- Tja, leider hat die Geschwindigkeit auch hier ihren Preis.
- SimpleSort ist kein vollständiger Ersatz des Dos-Sort. Es kennt zum
- Beispiel die Option Colstart nicht. Weiterhin sortiert SimpleSort
- schlicht nach den ASCII-Werten, was manchmal zu anderen Ergebnissen
- als die der bisherigen Sortierer führt. SimpleSort ist auch nicht
- Pipe-fähig, es lassen sich damit in der momentanen Version lediglich
- Dateien sortieren.
-
-
-
- 3.3. Known bugs :-((
- --------------------
-
- Es gibt einen Fehler im Quicksort (es wird der vom Compiler
- angebotene benutzt) der dazu führt daß dieser bei bestimmten
- Eingabekonfigurationen nicht terminiert. Dies hängt anscheinend von
- der Anzahl der zu sortierenden Zeilen und der Konsistenz der Daten
- ab. Ich hatte bisher zwar lediglich eine Beispieldatei finden können
- bei der sich dieses Verhalten zeigte (eine 4 MB lange Liste von
- einzelnen Wörtern), aber einmal ist einmal zuviel. Abhilfe schafft
- hier nur die Reduzierung des inbufsize, dann werden auch solche
- Dateien ordentlich sortiert. Sollte sich dieser Fehler in der Praxis
- in der realen Welt häufiger zeigen werde ich wohl den Quicksort
- selbst programmieren. Bei Dateien die nicht mit einem cr enden werden
- in der Zieldatei alle Zeichen danach abgeschnitten.
-
-
-
- 4. Nachwort (Shareware-Info)
- ============================
-
- Die Entwicklung dieses Programms hat mich einige Arbeit gekostet.
- Ich bitte jeden dies bei Gefallen zu honorieren und die Gebühr zu
- entrichten. Eine Weiterentwicklung des ganzen ist auch von der
- Resonanz abhängig. Meine Bankverbindung lautet :
-
- Helmut Neumann
- Stadtsparkasse Aachen
- Blz. 39050000
- Konto 16012726
-
- Bei Übersendung des Geldes bitte eine Mail an mich zur Information.
-
- Bug-Reports bitte DETALLIERT (notfalls mit den verursachenden
- Dateien) an mich senden. Ich bitte auch am Anfang, wo sich
- wahrscheinlich einige DICKE Fehler zeigen, um sofortige Meldung
- derselben und um Meldung eigener Bedürfnisse. Dazu bitte die
- bugreport.form verwenden. Ich bin im Netz unter folgenden Adressen
- erreichbar :
-
- Z-Netz : helmutn@tron.gun.de
- Internet : helmutn@tron.gun.de
-
- Bis dann, Helmut.
-